1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 import javax.management.MBeanInfo;
37 import javax.management.MBeanAttributeInfo;
38 import javax.management.MBeanOperationInfo;
39 import javax.management.MBeanParameterInfo;
40 import javax.management.MBeanNotificationInfo;
41 import javax.management.MBeanConstructorInfo;
42
43 public class MustBeValidCommand {
44
45 private static String[][] attributes = {
46 { "Attribute with valid identifiers",
47 "validType1","validNameAtt1" },
48 { "Attribute with invalid type",
49 "invalid-type", "validNameAtt2" },
50 { "Attribute with invalid name", "valid.type2",
51 "invalid-name-att3" },
52 { "Attribute with invalid name and type",
53 "invalidtype[]","invalid.name.att4" }
54 };
55 private static String[][] constructors = {
56 { "Constructor with valid name",
57 "ValidConstructor1" },
58 { "Constructor with invalid name",
59 "invalid.Constructor2"},
60 { "Constructor with invalid name",
61 "invalid-constructor-3" },
62 { "Constructor with invalid name",
63 "invalid constructor" }
64 };
65 private static String[][] mbeanclasses = {
66 { "MBean with valid class name",
67 "ValidMBeanClass1" },
68 { "MBean with valid class name",
69 "valid.mbean.Class2" },
70 { "MBean with invalid class name",
71 "invalid.MBeanClass3[]"},
72 { "MBean with invalid class name",
73 "invalid-mbean-class-4" },
74 { "MBean with invalid class name",
75 "invalid mbean class 5" }
76 };
77 private static String[][] notificationclasses = {
78 { "Notification with valid class name",
79 "ValidNotificationClass1" },
80 { "Notification with valid class name",
81 "valid.notification.Class2" },
82 { "Notification with invalid class name",
83 "invalid.NotificationClass3[]"},
84 { "Notification with invalid class name",
85 "invalid-notification-class-4" },
86 { "Notification with invalid class name",
87 "invalid notification class 5" }
88 };
89 private static String[][] operations = {
90 { "Operation with valid identifiers",
91 "validType1","validNameOp1" },
92 { "Operation with invalid type",
93 "invalid-type", "validNameOp2" },
94 { "Operation with invalid name", "valid.type2",
95 "invalid-name-op3" },
96 { "Operation with invalid name and type",
97 "invalidtype[]","invalid.name.op4" }
98 };
99 private static String[][] parameters = {
100 { "Parameter with valid identifiers",
101 "validType1","validNamePar1" },
102 { "Parameter with invalid type",
103 "invalid-type", "validNamePar2" },
104 { "Parameter with invalid name", "valid.type2",
105 "invalid-name-par3" },
106 { "Parameter with invalid name and type",
107 "invalidtype[]","invalid.name.par4" }
108 };
109
110 static private MBeanAttributeInfo[] makeAttInfos(String[][] spec) {
111 final MBeanAttributeInfo[] result =
112 new MBeanAttributeInfo[spec.length];
113 for (int i=0;i<result.length;i++) {
114 System.out.println("\tCreate an MBeanAttributeInfo: " +
115 spec[i][0]);
116 final MBeanAttributeInfo item =
117 new MBeanAttributeInfo(spec[i][2],spec[i][1],spec[i][0],
118 true,true,false);
119 result[i]=item;
120 }
121 return result;
122 }
123
124 static private MBeanParameterInfo[] makeParInfos(String[][] spec) {
125 final MBeanParameterInfo[] result =
126 new MBeanParameterInfo[spec.length];
127 for (int i=0;i<result.length;i++) {
128 System.out.println("\tCreate an MBeanParameterInfo: " +
129 spec[i][0]);
130 final MBeanParameterInfo item =
131 new MBeanParameterInfo(spec[i][2],spec[i][1],spec[i][0]);
132 result[i]=item;
133 }
134 return result;
135 }
136
137 static private MBeanOperationInfo[] makeOpInfos(String[][] spec) {
138 final MBeanOperationInfo[] result =
139 new MBeanOperationInfo[spec.length];
140 final MBeanParameterInfo[] pars = makeParInfos(parameters);
141 for (int i=0;i<result.length;i++) {
142 System.out.println("\tCreate an MBeanOperationInfo: " +
143 spec[i][0]);
144 final MBeanOperationInfo item =
145 new MBeanOperationInfo(spec[i][2],spec[i][0],pars,spec[i][1],
146 MBeanOperationInfo.ACTION_INFO);
147 result[i]=item;
148 }
149 return result;
150 }
151
152 static private MBeanConstructorInfo[] makeCtorInfos(String[][] spec) {
153 final MBeanConstructorInfo[] result =
154 new MBeanConstructorInfo[spec.length];
155 final MBeanParameterInfo[] pars = makeParInfos(parameters);
156 for (int i=0;i<result.length;i++) {
157 System.out.println("\tCreate an MBeanConstructorInfo: " +
158 spec[i][0]);
159 final MBeanConstructorInfo item =
160 new MBeanConstructorInfo(spec[i][1],spec[i][0],pars);
161 result[i]=item;
162 }
163 return result;
164 }
165
166 static private MBeanNotificationInfo[] makeNotifInfos(String[][] spec) {
167 final MBeanNotificationInfo[] result =
168 new MBeanNotificationInfo[spec.length];
169 final String[] types = {"valid.type","invalid-type"};
170 for (int i=0;i<result.length;i++) {
171 System.out.println("\tCreate an MBeanNotificationInfo: " +
172 spec[i][0]);
173 final MBeanNotificationInfo item =
174 new MBeanNotificationInfo(types,spec[i][1],spec[i][0]);
175 result[i]=item;
176 }
177 return result;
178 }
179
180 public static void main(String[] args) throws Exception {
181
182
183 final MBeanAttributeInfo[] atts = makeAttInfos(attributes);
184 final MBeanConstructorInfo[] ctors = makeCtorInfos(constructors);
185 final MBeanOperationInfo[] ops = makeOpInfos(operations);
186 final MBeanNotificationInfo[] notifs =
187 makeNotifInfos(notificationclasses);
188
189 for (int i=0; i<mbeanclasses.length;i++) {
190 System.out.println("Create an MBeanInfo: " + mbeanclasses[i][0]);
191 final MBeanInfo mbi =
192 new MBeanInfo(mbeanclasses[i][1],mbeanclasses[i][0],
193 atts, ctors, ops, notifs);
194 }
195
196
197
198 System.out.println("All MBeanInfo successfuly created!");
199 System.out.println("Bye! Bye!");
200 }
201 }